package done.easy_401_500;

import org.junit.Test;

import static com.study.util.LogUtil.info;
import static java.lang.Math.min;

/**
 * 453. Minimum Moves to Equal Array Elements 最小移动次数使数组元素相等
 * <p>
 * 给定一个长度为 n 的非空整数数组，找到让数组所有元素
 * 相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。
 * <p>
 * 示例:
 * 输入: [1,2,3]
 * 输出: 3
 * 解释:
 * 只需要3次移动（注意每次移动会增加两个元素的值）：
 * <p>
 * [1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]
 * <p>
 * n-1个数同时加一，就好比每次有一个数自身减一，因为只能做减法，
 * 所以数组最后的数只能是最小值。这样的话每个元素减去最小值求其和就是答案。
 * 2019-04-13 11:28 PM
 **/
@SuppressWarnings("all")
public class MinimumMovesToEqualArrayElements {

    public int minMoves(int[] nums) {
        // 190414 first
        return -1;
    }

    @Test
    public void test() {
        info(minMoves(new int[]{1, 2, 3}));
    }
}


























/*
public int minMoves(int[] nums) {
    int total = 0;
    int min = Integer.MAX_VALUE;

    for (int i = 0; i < nums.length; i++) {
        total += nums[i];
        min = min(min, nums[i]);
    }
    return total - nums.length * (min);
}
*/
